package interfaz;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.Timer;

public class DialogoCalibracion extends JDialog implements ActionListener{

	private int width = 400;
	private int height = 150;

	private static final String FRASE_1 = "Esta es la frase 1"; 
	private static final String FRASE_2 = "Esta es la frase 2"; 
	private static final String FRASE_3 = "Esta es la frase 3"; 
	private static final String FRASE_4 = "Esta es la frase 4";
	private static final String FRASE_ESPERA = "Preparandose para Captura";

	private static final String[] FRASES = {FRASE_1, FRASE_2, FRASE_3, FRASE_4};

	private static final String REPETIR = "REPETIR";

	private int tiempoPorFrase = 10;
	private int tiempoEspera = 5;
	private JButton botonRepetir;
	private JLabel labFrase;
	private JLabel labContador;

	private Font font;
	private int contador;
	private int fraseActual;
	private InterfazTMS interfazTMS;

	private Timer timer;
	
	private boolean estadoNormal = true;

	public DialogoCalibracion(InterfazTMS nInterfazTMS)
	{
		contador = tiempoPorFrase;
		interfazTMS = nInterfazTMS;
		setSize(width, height);
		font = new Font("Verdana", Font.BOLD, 60);

		labFrase = new JLabel(FRASE_1);
		labFrase.setHorizontalAlignment(JLabel.CENTER);
		labContador = new JLabel(tiempoPorFrase + "");
		labContador.setFont(font);
		labContador.setPreferredSize(new Dimension(100, 0));
		botonRepetir = new JButton("Repetir");
		botonRepetir.addActionListener(this);
		botonRepetir.setActionCommand(REPETIR);

		setLayout(new BorderLayout());
		add(labFrase, BorderLayout.CENTER);
		add(botonRepetir, BorderLayout.SOUTH);
		add(labContador, BorderLayout.EAST);
		setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
		setResizable(false);
		timer = new Timer(1000, this);
	}
	
	public void setPosition(Dimension screenSize)
	{
		setLocation((screenSize.width/2) - (width/2), (screenSize.height/2) - (height/2));
	}
	
	public void setPaciente(int paciente)
	{
		setTitle("Paciente " + paciente);
	}

	public void iniciar()
	{
		timer.start();
		contador = tiempoPorFrase;
		fraseActual = 0;
		estadoNormal = true;
		labContador.setText(tiempoPorFrase + "");
		labFrase.setText(FRASE_1);
	}

	public void cambiarContador(int numero)
	{
		labContador.setText(numero+"");
	}

	@Override
	public void actionPerformed(ActionEvent event) {
		if(event.getSource() instanceof Timer)
		{
			contador--;
			if(contador == 0)
			{
				if(estadoNormal)
				{
					fraseActual++;
					contador = tiempoPorFrase;
				}
				else
				{
					interfazTMS.terminarCalibracion();
				}
			}

			if(fraseActual < 4)
			{
				labFrase.setText(FRASES[fraseActual]);
			}
			else if(fraseActual == 4 && estadoNormal)
			{
				contador = tiempoEspera;
				estadoNormal = false;
			}
			
			if(!estadoNormal)
			{
				labFrase.setText(FRASE_ESPERA);
			}
			labContador.setText(contador+"");		
		}
		else
		{
			contador = tiempoPorFrase;
			if(estadoNormal)
			{
				fraseActual --;
				if(fraseActual < 0)
				{
					fraseActual = 0;
				}
			}
			else
			{
				estadoNormal = true;
				fraseActual = 3;
			}
		}
	}

	public void parar()
	{
		timer.stop();
	}

}
